/**
* \file		Technologie.h
* \brief	Définit la structure Technologie
* \details	C'est ici que sont définis la structure Technologie, ses
*		accesseurs, ses mutateurs.
*/

#ifndef TECHNOLOGIE_H
#define TECHNOLOGIE_H

#include "Entrepot.h"
#include "Prerequis.h"

/**
* \brief	Informations définissant une Technologie.
* \details	Cette structure comporte les coûts du développement de la
*		technologie, son identifiant, si elle a ou non été développée,
*		et les éventuels bonus qu'elle pourrait apporter.
*/

struct sTechnologie
{
   int ID;			/*!<ID : entier. Pour l'instant, 6 chiffres :
				10 = Récolte, 11 = Population, 12 =
				Militaire ; puis 01 à xx = branche de l'arbre
				(par exemple : 1001 = récolte de bois, 1002 =
				récolte de métal...) ; puis 00 à xx = place
				dans la branche de l'arbre */
   char *nom;			/*!<nom : chaîne de caractères */
   char *descr;			/*!<descr : description de la technologie
				(chaîne de caractères) */
   int prix[4];			/*!<coût de la technologie. Dans l'ordre du
				tableau : bois, metal, biere, nourriture */
   int bonus[8];		/*!<bonus apporté dans les différents domaines
				suivants, dans l'ordre du tableau : attaque,
				défense, fecondite, mortalite, immigration,
				emigration, moral, vitesse de production */
   int malus[8];		/*!<malus apporté dans les différents domaines
				suivants, dans l'ordre du tableau : attaque,
				défense, fecondite, mortalite, immigration,
				emigration, moral, vitesse de production */
   char dev;			/*!<1 si la technologie a été développée,
				sinon 0 : booléen */
   int nbPrerequis;		/*!<nombre de technologies nécessaires pour
				accéder à celle-ci */
   Prerequis *tabNec;		/*!<tableau des technologies nécessaires au
				développement de celle-ci, et si elles ont été
				développées */
   struct sTechnologie *techSuiv;/*!<"Niveau suivant" de la technologie :
				technologie découlant directement de la
				technologie actuelle */
    int nbTechDebloquees;	/*!<nombre technologies débloquées par cette
				technologie */
    int *tabIDTechDebl;        /*!<tableau des ID des technologies débloquées
					*/
    struct sTechnologie **tabTechDebloquees;/*!<tableau de liens vers les
			technologies débloquées par cette technologie */
};

typedef struct sTechnologie Technologie;


/*========================== Gestion de la mémoire ==========================*/
/**
* \brief	Initialise une structure technologie
* \details	Met à 0 tous les int, réserve la mémoire nécessaire aux
*		tableaux, remplit le nom de la technologie, donne la bonne
*		valeur à nbPrerequis.
* \param	ptech		Pointeur vers la technologie à initialiser
* \param	nom		Nom de la technologie
* \param	descr		Description de la technologie
* \param	nbPrer		Nombre de technologies qu'il faut avoir
*				développées pour pouvoir développer celle-ci
* \param    nbDebloquees   Nombre de technologies débloquées par
*       cette technologie
*/
void initTech(Technologie *ptech, char *nom, char *descr, int nbPrer, int nbDebloquees);

/**
* \brief	Crée une Technologie
* \details	Crée une technologie et l'initialise grâce à initTech.
* \param	pnouvTech	pointeur sur la Technologie à créer
* \param	nom		Nom de la technologie
* \param	descr		Description de la technologie
* \param	nbPrer		Nombre de technologies qu'il faut avoir
*				développées pour pouvoir développer celle-ci
* \param    nbDebloquees   Nombre de technologies débloquées par
*       cette technologie
*/
void creerTech(Technologie **pnouvTech, char *nom, char *descr, int nbPrer, int nbDebloquees);

/**
* \brief	Libère la mémoire allouée pour les tableaux de la technologie
* \details	Met à NULL tous les Pointeurs, désalloue la mémoire réservée
*		initialement pour les tableaux de char, met toutes les
*		valeurs de la structure passée en argument à leur valeur par
*		défaut (0).
* \param	ptech		Pointeur vers la technologie à libérer
*/
void libereTech(Technologie *ptech);

/**
* \brief	Libère la mémoire allouée pour une Technologie donnée
* \param	ptech		Pointeur vers la technologie à détruire
*/
void detruireTech(Technologie *ptech);

/*============================= Accesseurs =============================*/
/**
* \brief	Retourne l'ID d'une Technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getIDTech(const Technologie *ptech);

/**
* \brief	Retourne le nom d'une Technologie donnée
* \return	Une chaîne de caractères
* \param	ptech		Pointeur vers une technologie
*/
char *getNomTech(const Technologie *ptech);

/**
* \brief	Retourne la description d'une Technologie donnée
* \return	Une chaîne de caractères
* \param	ptech		Pointeur vers une technologie
*/
char *getDescriptionTech(const Technologie *ptech);

/**
* \brief	Retourne le coût en bois d'une technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getCoutBoisTech(const Technologie *ptech);

/**
* \brief	Retourne le coût en métal d'une technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getCoutMetalTech(const Technologie *ptech);

/**
* \brief	Retourne le coût en bière d'une technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getCoutBiereTech(const Technologie *ptech);

/**
* \brief	Retourne le coût en nourriture d'une technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getCoutNourritureTech(const Technologie *ptech);

/**
* \brief	Retourne le bonus d'attaque apporté par une technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getBonusAttaqueTech(const Technologie *ptech);

/**
* \brief	Retourne le bonus de défense apporté par une technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getBonusDefenseTech(const Technologie *ptech);

/**
* \brief	Retourne le bonus en fécondité apporté par une technologie
*		donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getBonusFeconditeTech(const Technologie *ptech);

/**
* \brief	Retourne le bonus apporté par une technologie donnée sur la
*		mortalité de la population (ces valeurs seront probablement
*		négatives)
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getBonusMortaliteTech(const Technologie *ptech);

/**
* \brief	Retourne le bonus apporté par une technologie donnée sur
*		l'immigration
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getBonusImmigrationTech(const Technologie *ptech);

/**
* \brief	Retourne le bonus apporté par une technologie donnée sur
*		l'émigration de la population (ces valeurs seront probablement
*		négatives)
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getBonusEmigrationTech(const Technologie *ptech);

/**
* \brief	Retourne le bonus apporté par une technologie donnée sur
*		le moral de la population
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getBonusMoralTech(const Technologie *ptech);

/**
* \brief	Retourne le bonus apporté par une technologie donnée sur
*		la vitesse de production
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getBonusProdTech(const Technologie *ptech);

/**
* \brief	Retourne le malus d'attaque apporté par une technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getMalusAttaqueTech(const Technologie *ptech);

/**
* \brief	Retourne le malus de défense apporté par une technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getMalusDefenseTech(const Technologie *ptech);

/**
* \brief	Retourne le malus en fécondité apporté par une technologie
*		donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getMalusFeconditeTech(const Technologie *ptech);

/**
* \brief	Retourne le malus apporté par une technologie donnée sur la
*		mortalité de la population (ces valeurs seront probablement
*		positives)
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getMalusMortaliteTech(const Technologie *ptech);

/**
* \brief	Retourne le malus apporté par une technologie donnée sur
*		l'immigration
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getMalusImmigrationTech(const Technologie *ptech);

/**
* \brief	Retourne le malus apporté par une technologie donnée sur
*		l'émigration de la population (ces valeurs seront probablement
*		positives)
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getMalusEmigrationTech(const Technologie *ptech);

/**
* \brief	Retourne le malus apporté par une technologie donnée sur
*		le moral de la population
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getMalusMoralTech(const Technologie *ptech);

/**
* \brief	Retourne le malus apporté par une technologie donnée sur
*		la vitesse de production
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getMalusProdTech(const Technologie *ptech);

/**
* \brief	Retourne la valeur indiquant si une technologie donnée a été
*		développée (1 si oui, 0 si non)
* \return	Un caractère (faisant office de booléen)
* \param	ptech		Pointeur vers une technologie
*/
char getDevTech(const Technologie *ptech);

/**
* \brief	Retourne le nombre de technologies requises pour pouvoir
*		développer une technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getNbPrerequisProdTech(const Technologie *ptech);

/**
* \brief	Retourne un pointeur vers le tableau des prérequis d'une
*		technologie donnée
* \return	Un pointeur sur Prerequis
* \param	ptech		Pointeur vers une technologie
*/
Prerequis *getTabPrerequisProdTech(const Technologie *ptech);

/**
* \brief	Retourne un pointeur vers la technologie découlant directement
*		de celle-ci
* \return	Un pointeur sur Technologie
* \param	ptech		Pointeur vers une technologie
*/
Technologie *getTechSuivTech(const Technologie *ptech);

/**
* \brief	Retourne l'ID de la ième Technologie du tableau des prérequis
*		d'une technologie donnée.
* \details	Si la technologie n'a pas de prérequis, retourne -1.
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
* \param	i		Entier positif
*/
int getIDIemePrerequisTech(const Technologie *ptech, int i);

/**
* \brief	Retourne la valeur indiquant si une technologie donnée
*		nécessaire pour pouvoir accéder à une technologie a été
*		développée.
* \details	Retourne 1 si la technologie a été développée, 0 si elle ne l'a
*		pas été, -1 si elle ne figure pas dans le tableau des prérequis
* \return	Un caractère (faisant office de booléen)
* \param	ptech		Pointeur vers une technologie
*/
char getDevPrerTech(const Technologie *ptech, int ID);

/**
* \brief	Retourne un pointeur vers le tableau des technologies débloquées
*        par une technologie donnée
* \return	Un pointeur sur un tableau de liens vers Technologies
* \param	ptech		Pointeur vers une technologie
*/
Technologie **getTechDebloqueesTech(const Technologie *ptech);

/**
* \brief	Retourne le nombre de technologies débloquées par une technologie
*        donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getNbTechDebloqueesTech(const Technologie *ptech);

/**
* \brief	Retourne le lien vers la ième technologie du tableau des
*		Technologies débloquées par une technologie donnée
* \details	Si la technologie ne débloque rien, retourne NULL.
* \return	Un lien vers Technologie
* \param	ptech	Pointeur vers une Technologie
* \param	i		Entier positif
*/
Technologie *getIemeTechDebloqueeTech(const Technologie *ptech, int i);

/**
* \brief	Retourne un pointeur vers le tableau des ID des prérequis d'une
*		technologie donnée
* \return	Un pointeur vers le début d'un tableau d'entiers
* \param	ptech		Pointeur vers une technologie
*/
int *getTabIDTechDebloqueeTech(const Technologie *ptech);

/**
* \brief	Retourne la ième ID du tableau des ID des Technologies
*		débloquées par une technologie donnée
* \details	Si la technologie ne débloque rien, retourne -1.
* \return	Un entier
* \param	ptech	Pointeur vers une technologie
* \param	i		Entier positif
*/
int getIemeIDTechDebloqueeTech(const Technologie *ptech, int i);

/*============================== Mutateurs ==============================*/

/**
* \brief	Remplace l'ID d'une Technologie donnée par un noombre donné
* \param	ptech		Pointeur vers une technologie
* \param	nouvID		ID, entier
*/
void setIDTech(Technologie *ptech, int nouvID);

/**
* \brief	Remplace le nom d'une Technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvNom		Nom, chaîne de caractères
*/
void setNomTech(Technologie *ptech, char *nouvNom);

/**
* \brief	Remplace la description d'une Technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvDescr	Description, chaîne de caractères
*/
void setDescriptionTech(Technologie *ptech, char *nouvDescr);

/**
* \brief	Remplace le coût en bois d'une technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvCout	Coût de la technologie, entier
*/
void setCoutBoisTech(Technologie *ptech, int nouvCout);

/**
* \brief	Remplace le coût en métal d'une technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvCout	Coût de la technologie, entier
*/
void setCoutMetalTech(Technologie *ptech, int nouvCout);

/**
* \brief	Remplace le coût en bière d'une technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvCout	Coût de la technologie, entier
*/
void setCoutBiereTech(Technologie *ptech, int nouvCout);

/**
* \brief	Remplace le coût en nourriture d'une technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvCout	Coût de la technologie, entier
*/
void setCoutNourritureTech(Technologie *ptech, int nouvCout);

/**
* \brief	Remplace le bonus d'attaque apporté par une technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvBonus	Bonus apporté, entier
*/
void setBonusAttaqueTech(Technologie *ptech, int nouvBonus);

/**
* \brief	Remplace le bonus de défense apporté par une technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvBonus	Bonus apporté, entier
*/
void setBonusDefenseTech(Technologie *ptech, int nouvBonus);

/**
* \brief	Remplace le bonus en fécondité apporté par une technologie
*		donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvBonus	Bonus apporté, entier
*/
void setBonusFeconditeTech(Technologie *ptech, int nouvBonus);

/**
* \brief	Remplace le bonus apporté par une technologie donnée sur la
*		mortalité de la population (ces valeurs seront probablement
*		négatives)
* \param	ptech		Pointeur vers une technologie
* \param	nouvBonus	Bonus apporté, entier
*/
void setBonusMortaliteTech(Technologie *ptech, int nouvBonus);

/**
* \brief	Remplace le bonus apporté par une technologie donnée sur
*		l'immigration
* \param	ptech		Pointeur vers une technologie
* \param	nouvBonus	Bonus apporté, entier
*/
void setBonusImmigrationTech(Technologie *ptech, int nouvBonus);

/**
* \brief	Remplace le bonus apporté par une technologie donnée sur
*		l'émigration de la population (ces valeurs seront probablement
*		négatives)
* \param	ptech		Pointeur vers une technologie
* \param	nouvBonus	Bonus apporté, entier
*/
void setBonusEmigrationTech(Technologie *ptech, int nouvBonus);

/**
* \brief	Remplace le bonus apporté par une technologie donnée sur
*		le moral de la population
* \param	ptech		Pointeur vers une technologie
* \param	nouvBonus	Bonus apporté, entier
*/
void setBonusMoralTech(Technologie *ptech, int nouvBonus);

/**
* \brief	Remplace le bonus apporté par une technologie donnée sur
*		la vitesse de production
* \param	ptech		Pointeur vers une technologie
* \param	nouvBonus	Bonus apporté, entier
*/
void setBonusProdTech(Technologie *ptech, int nouvBonus);

/**
* \brief	Remplace le malus d'attaque apporté par une technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvMalus	Malus apporté, entier
*/
void setMalusAttaqueTech(Technologie *ptech, int nouvMalus);

/**
* \brief	Remplace le malus de défense apporté par une technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvMalus	Malus apporté, entier
*/
void setMalusDefenseTech(Technologie *ptech, int nouvMalus);

/**
* \brief	Remplace le malus en fécondité apporté par une technologie
*		donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvMalus	Malus apporté, entier
*/
void setMalusFeconditeTech(Technologie *ptech, int nouvMalus);

/**
* \brief	Remplace le malus apporté par une technologie donnée sur la
*		mortalité de la population (ces valeurs seront probablement
*		positives)
* \param	ptech		Pointeur vers une technologie
* \param	nouvMalus	Malus apporté, entier
*/
void setMalusMortaliteTech(Technologie *ptech, int nouvMalus);

/**
* \brief	Remplace le malus apporté par une technologie donnée sur
*		l'immigration
* \param	ptech		Pointeur vers une technologie
* \param	nouvMalus	Malus apporté, entier
*/
void setMalusImmigrationTech(Technologie *ptech, int nouvMalus);

/**
* \brief	Remplace le malus apporté par une technologie donnée sur
*		l'émigration de la population (ces valeurs seront probablement
*		positives)
* \param	ptech		Pointeur vers une technologie
* \param	nouvMalus	Malus apporté, entier
*/
void setMalusEmigrationTech(Technologie *ptech, int nouvMalus);

/**
* \brief	Remplace le malus apporté par une technologie donnée sur
*		le moral de la population
* \param	ptech		Pointeur vers une technologie
* \param	nouvMalus	Malus apporté, entier
*/
void setMalusMoralTech(Technologie *ptech, int nouvMalus);

/**
* \brief	Remplace le malus apporté par une technologie donnée sur
*		la vitesse de production
* \param	ptech		Pointeur vers une technologie
* \param	nouvMalus	Malus apporté, entier
*/
void setMalusProdTech(Technologie *ptech, int nouvMalus);

/**
* \brief	Remplace la valeur indiquant si une technologie donnée a été
*		développée (1 si oui, 0 si non)
* \param	ptech		Pointeur vers une technologie
* \param	nouvVal		Nouvelle valeur indicatrice, char
*/
void setDevTech(Technologie *ptech, char nouvVal);

/**
* \brief	Remplace le nombre de technologies requises pour pouvoir
*		développer une technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvNb		Nouvelle valeur du nombre de prérequis, entier
*/
void setNbPrerequisProdTech(Technologie *ptech, int nouvNb);

/**
* \brief	Remplace la valeur indiquant si une technologie donnée
*		nécessaire pour pouvoir accéder à une technologie a été
*		développée (1 si oui, 0 si non)
* \param	ptech		Pointeur vers une technologie
* \param	nouvVal		Nouvelle valeur indicatrice, char
* \param	ID		ID de la technologie dont la valeur de dev
*				doit être modifiée
*/
void setDevPrerTech(Technologie *ptech, int ID, char nouvVal);

/**
* \brief	Remplace la valeur indiquant l'ID d'une technologie préquise
*		dont le numéro de la case a été donné par une ID donnée
* \details	La numérotation commence à 0
* \param	ptech		Pointeur vers une technologie
* \param	numCase		Numéro de la case à remplir, entier
* \param	ID		ID de la technologie dont la valeur de dev
*				doit être modifiée
*/
void setTabPrerTech(Technologie *ptech, int ID, int numCase);

/**
* \brief	Remplace le pointeur vers la technologie suivante par celui
*		donné en paramètre
* \param	ptech		Pointeur vers une technologie
* \param	techSuiv	Pointeur vers la technologie suivante
*/
void setTechSuivTech(Technologie *ptech, Technologie *techSuiv);

/**
* \brief	Remplace la valeur d'une case donnée du tableau des Couts par
*		une valeur donnée
* \details	La numérotation commence à 0.
* \param	ptech		Pointeur vers une technologie
* \param	numCase		Numéro de la case à remplir, entier
* \param	nouvCout	nouveau cout de la technologie
*/
void setTabCoutTech(Technologie *ptech, int nouvCout, int numCase);

/**
* \brief	Remplace la valeur d'une case donnée du tableau des Bonus par
*		une valeur donnée
* \details	La numérotation commence à 0.
* \param	ptech		Pointeur vers une technologie
* \param	numCase		Numéro de la case à remplir, entier
* \param	nouvBonus	nouveau bonus apporté par la technologie
*/
void setTabBonusTech(Technologie *ptech, int nouvBonus, int numCase);

/**
* \brief	Remplace la valeur d'une case donnée du tableau des Malus par
*		une valeur donnée
* \details	La numérotation commence à 0.
* \param	ptech		Pointeur vers une technologie
* \param	numCase		Numéro de la case à remplir, entier
* \param	nouvMalus	nouveau malus apporté par la technologie
*/
void setTabMalusTech(Technologie *ptech, int nouvMalus, int numCase);

/**
* \brief	Remplace le nombre de technologies débloquées par une
*       technologie donnée
* \param	ptech		Pointeur vers une technologie
* \param	nouvNb		Nouvelle valeur du nombre de technologies
*       débloquées, entier
*/
void setNbTechDebloqueesTech(Technologie *ptech, int nouvNb);

/**
* \brief	Remplace le lien vers une technologie débloquée
*		dont le numéro de la case a été donné par un lien donné
* \details	La numérotation commence à 0
* \param	ptech		Pointeur vers une technologie
* \param	numCase		Numéro de la case à remplir, entier
* \param	pnouvLien	lien vers la technologie débloquée
*/
void setTabTechDebloqueesTech(Technologie *ptech, Technologie *pnouvLien, int numCase);

/**
* \brief	Remplace l'ID d'une technologie débloquée
*		dont le numéro de la case a été donné par une ID
* \details	La numérotation commence à 0
* \param	ptech		Pointeur vers une technologie
* \param	numCase		Numéro de la case à remplir, entier
* \param	nouvID  	ID de la technologie débloquée
*/
void setTabIDTechDebloqueesTech(Technologie *ptech, int nouvID, int numCase);

/*========================== Fonctions autres ==========================*/
/**
* \brief	Retourne la valeur indiquant si une technologie donnée est
*		développable ou non
* \details	Une technologie est développable si toutes les technologies
*		prérequises ont été développées et si les ressources
*		nécessaires sont dans l'entrepôt. Retourne 0 si toutes les
*		technologies prérequises n'ont pas été développées, -1 si elles
*		l'ont été mais que le joueur n'a pas les ressources nécessaires
*		pour payer son développement, 1 si la technologie est
*		développable.
* \return	Un caractère
* \param	ptech		Pointeur vers une technologie
* \param	pstock		Pointeur vers l'entrepôt du joueur
*/
char devDisponibleTech(Technologie *ptech, Entrepot *pstock);

/**
* \brief	Retourne le numéro du sous-arbre d'une Technologie dont on
*		aura passé l'ID
* \return	Un entier
* \param	ID		Entier, ID d'une technologie
*/
int getNumSADepuisIDTech(int ID);

/**
* \brief	Retourne le numéro de la branche d'une Technologie dont on *		aura passé l'ID
* \return	Un entier
* \param	ID		Entier, ID d'une technologie
*/
int getNumBrancheDepuisIDTech(int ID);

/**
* \brief	Retourne le numéro du sous-arbre d'une Technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getNumSATech(const Technologie *ptech);

/**
* \brief	Retourne le numéro de la branche d'une Technologie donnée
* \return	Un entier
* \param	ptech		Pointeur vers une technologie
*/
int getNumBrancheTech(const Technologie *ptech);

/*========================== Fonction de Test ==========================*/
/**
* \brief	Teste les différentes fonctions du module Technologie
* \details	Teste les différentes fonctions du module Technologie en les
*		utilisant avec diverses valeurs plus ou moins probables
*/
void testTech();

#endif
